package com.smdp.service;

import com.smdp.dto.Result;
import com.smdp.entity.Voucher;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 优惠券服务接口。
 * 包含商家新增优惠券、商家新增秒杀券、用户查询商家优惠券信息。新增秒杀券时，除了保存普通优惠券信息，还将秒杀券信息保存到数据库，
 * 将秒杀券库存信息保存到Redis，将秒杀券id保存到布隆过滤器，并通过RabbitMQ添加优惠券提醒任务。
 *
 * @author 蔡方珩
 */
public interface IVoucherService extends IService<Voucher> {
    /**
     * 查询店铺的优惠券列表
     * @param shopId 店铺id
     * @return 优惠券列表
     */
    Result queryVoucherOfShop(Long shopId);
    /**
     * 新增秒杀券。
     * 验证店主身份，如果是店主则新增秒杀券。除了保存普通优惠券信息，将秒杀券信息保存到数据库，将秒杀券库存信息保存到Redis，
     * 将秒杀券id保存到布隆过滤器，通过RabbitMQ添加优惠券提醒任务。
     * @param voucher 优惠券信息
     * @return 成功：优惠券id / 失败：失败原因
     */
    Result addSeckillVoucher(Voucher voucher);
    /**
     * 新增普通券。
     * 验证店主身份，如果是店主则新增优惠券。
     * @param voucher 优惠券信息
     * @return 成功：优惠券id / 失败：失败原因
     */
    Result addVoucher(Voucher voucher);
}
